package guigu.Collection;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/*
   Collections：操作Collection、Map的工具类

   面试题:Collection和Collections的区别？

   常用方法测试：

 */
public class CollectionsMethodTest {
    /*
       reverse(List):反转 List中元素的顺序
       shuffle(List):对List集合元素进行随机排序
       sort(List):根据元素的自然排序对指定List集合元素按升序排序
       sort(List,Comparator):根据指定的Comparator产生的顺序对List集合元素进行排序
       swap(List,int,int):将指定List集合中的i处元素和j处元素进行交换
     */
    @Test
    public void test1()
    {
        List<User> list = new ArrayList<User>();
        list.add(new User("Tom", 18));
        list.add(new User("Jack",23));
        list.add(new User("Jerry",11));
        list.add(new User("Mary",14));


        // reverse(List):反转 List中元素的顺序
       // Collections.reverse(list);

        System.out.println(list);
        //sort(List,Comparator):根据指定的Comparator产生的顺序对List集合元素进行排序
        Collections.sort(list, new Comparator<User>() {
            //按照名字大小排序
            @Override
            public int compare(User o1, User o2) {
                return o1.getName().compareTo(o2.getName());
            }
        });

        //shuffle(List):对List集合元素进行随机排序
       // Collections.shuffle(list);


        //swap(List,int,int):将指定List集合中的i处元素和j处元素进行交换
       // Collections.swap(list,2,3);
        System.out.println(list);
    }

    /*
       Object max(Collection):求最大值
       Object max(Collection,Comparator):根据Comparator指定的顺序，返回给定集合中的最大值
       Object min(Collection):
       Object min(Collection,Comparator):
       int frequency(Collection,Object):返回指定集合中指定元素的出现次数
       void copy(List dest,List src):将src中的内容复制到dest中
       boolean replaceAll(List list,Object oldVal,Object newVal):在集合List中用新值替换旧值

     */
    @Test
    public void test2()
    {
        List<Integer> list = new ArrayList<Integer>();
        list.add(123);
        list.add(258);
        list.add(123);
        list.add(123);

        //int frequency(Collection,Object):返回指定集合中指定元素的出现次数
        int frequency = Collections.frequency(list,123);
        System.out.println(frequency);

        //boolean replaceAll(List list,Object oldVal,Object newVal):在集合List中用新值替换旧值
        boolean b = Collections.replaceAll(list, 258, 123);
        System.out.println(b);
        System.out.println(list);
    }

}
